Method of coding and decoding images, coding and decoding device and computer programs corresponding thereto

ABSTRACT

A method of coding at least one image comprising the steps of splitting the image into a plurality of blocks, of grouping said blocks into a predetermined number of subsets of blocks, of coding each of said subsets of blocks in parallel, the blocks of a subset considered being coded according to a predetermined sequential order of traversal. The coding step comprises, for a current block of a subset considered, the sub-step of predictive coding of said current block with respect to at least one previously coded and decoded block, and the sub-step of entropy coding of said current block on the basis of at least one probability of appearance of a symbol.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/003,014, filed Sep. 4, 2013, which is the U.S. national phase ofInternational Patent Application No. PCT/FR2012/050380, filed Feb. 23,2012, which claims the benefit of French Application No. 1151849, filedMar. 7, 2011, the entire contents of which are incorporated herein byreference.

FIELD OF THE INVENTION

The present invention pertains generally to the field of imageprocessing, and more precisely to the coding and to the decoding ofdigital images and of sequences of digital images.

The invention can thus, especially, be applied to the video codingimplemented in current video coders (MPEG, H.264, etc) or forthcomingvideo coders (ITU-T/VCEG (H.265) or ISO/MPEG (HVC).

BACKGROUND OF THE INVENTION

Current video coders (MPEG, H264, etc.) use a block-wise representationof the video sequence. The images are cut up into macro-blocks, eachmacro-block is itself cut up into blocks and each block, or macro-block,is coded by intra-image or inter-image prediction. Thus, certain imagesare coded by spatial prediction (intra prediction), while other imagesare coded by temporal prediction (inter prediction) with respect to oneor more coded-decoded reference images, with the aid of a motioncompensation known by the person skilled in the art. Moreover, for eachblock can be coded a residual block corresponding to the original blockdecreased by a prediction. The coefficients of this block are quantizedafter optional transformation, and then coded by an entropy coder.

Intra prediction and inter prediction require that certain blocks whichhave been previously coded and decoded are available, so as to be used,either at the decoder or at the coder, to predict the current block. Aschematic example of such a predictive coding is represented in FIG. 1A,in which an image I_(N) is divided into blocks, a current block MB_(i)of this image being subjected to a predictive coding with respect to apredetermined number of three blocks MBr₁, MBr₂ and MBr₃ previouslycoded and decoded, such as designated by the hatched arrows. Theaforementioned three blocks specifically comprise the block MBr₁situated immediately to the left of the current block MB_(i), and thetwo blocks MBr₂ and MBr₃ situated respectively immediately above and tothe above right of the current block MB_(i).

Of more particular interest here is the entropy coder. The entropy coderencodes the information in its order of arrival. Typically a row-by-rowtraversal of the blocks is carried out, of “raster-scan” type, asillustrated in FIG. 1A by the reference PRS, starting from the block atthe top left of the image. For each block, the various items ofinformation necessary for the representation of the block (type ofblock, mode of prediction, residual coefficients, etc.) are dispatchedsequentially to the entropy coder.

An effective arithmetical coder of reasonable complexity is alreadyknown, called “CABAC” (“Context Adaptive Binary Arithmetic Coder”),introduced into the AVC compression standard (also known as ISO-MPEG4part 10 and ITU-T H.264).

This entropy coder implements various concepts;

-   -   arithmetical coding: the coder, such as described initially in        the document J. Rissanen and G. G. Langdon Jr, “Universal        modeling and coding,” IEEE Trans. Inform. Theory, vol. IT-27,        pp. 12-23, January 1981, uses, to code a symbol, a probability        of occurrence of this symbol;    -   adaptation to context: this entails adapting the probability of        occurrence of the symbols to be coded. On the one hand,        on-the-fly learning is carried out. On the other hand, according        to the state of the previously coded information, a specific        context is used for the coding. To each context there        corresponds an inherent probability of occurrence of the symbol.        For example a context corresponds to a type of coded symbol (the        representation of a coefficient of a residual, signaling of        coding mode, etc.) according to a given configuration, or a        state of the neighborhood (for example the number of “intra”        modes selected from the neighborhood, etc.);    -   binarization: the symbols to be coded are cast into the form of        a string of bits. Subsequently, these various bits are        successively dispatched to the binary entropy coder.

Thus, this entropy coder implements, for each context used, a system forlearning probabilities on the fly with respect to the previously codedsymbols for the context considered. This learning is based on the orderof coding of these symbols. Typically, the image is traversed accordingto an order of “raster-scan” type, described hereinabove.

During the coding of a given symbol b that may equal 0 or 1, thelearning of the probability P_(i) of occurrence of this symbol isupdated for a current block MB_(i) in the following manner:

${p_{i}( {b = 0} )} = {{\alpha \cdot {p_{i - 1}( {b = 0} )}} + \{ \begin{matrix}( {1 - \alpha} ) & {{if}\mspace{14mu}{coded}\mspace{14mu}{bit}\mspace{14mu}{is}\mspace{14mu} 0} \\0 & {otherwise}\end{matrix} }$where α is a predetermined value, for example 0.95 and P_(i−1) is theprobability of symbol occurrence calculated during the last occurrenceof this symbol.

A schematic example of such an entropy coding is represented in FIG. 1A,in which a current block MB_(i) of the image I_(N) is subjected to anentropy coding. When the entropy coding of the block MB_(i) begins, thesymbol occurrence probabilities used are those obtained after coding ofa previously coded and decoded block, which is that which immediatelyprecedes the current block MB_(i) in accordance with the aforementionedrow-by-row traversal of the blocks of “raster scan” type. Such alearning based on block-by-block dependency is represented in FIG. 1Afor certain blocks only for the sake of clarity of the figure, by thethin-line arrows.

The drawback of such a type of entropy coding resides in the fact thatduring the coding of a symbol situated at the start of a row, theprobabilities used correspond mainly to those observed for the symbolssituated at the end of the previous row, having regard to the “rasterscan” traversal of the blocks. Now, on account of the possible spatialvariation of the probabilities of the symbols (for example for a symbolrelated to an item of motion information, the motion situated in theright part of an image may be different from that observed in the leftpart and therefore likewise for the local probabilities stemmingtherefrom), a lack of local appropriateness of the probabilities may beobserved, with the risk of causing a loss of effectiveness duringcoding.

The document “Annex A: CDCM Video Codec Decoder Specification” availableat the Internet addresshttp://wftp3.itu.int/av-arch/jctvc-site/2010_(—)04_A_Dresden/JCTVC-A114-AnnexA.doc(on 8 Feb. 2011) describes a coding method which alleviates the drawbackmentioned above. The coding method described in the above documentcomprises, as illustrated in FIG. 1B:

-   -   a step of cutting an image I_(N) into a plurality of blocks,    -   a step of predictive coding of a current block MB_(i) of this        image with respect to a predetermined number of three blocks        MBr₁, MBr₂ and MBr₃ previously coded and decoded, such as        designated by the hatched arrows. The aforementioned three        blocks specifically comprise the block MBr₁ situated immediately        to the left of the current block MB_(i), and the two blocks MBr₂        and MBr₃ situated respectively immediately above and to the        above right of the current block MB_(i),    -   a step of entropy coding of the blocks of the image I_(N),        according to which each block uses the probabilities of symbol        occurrence calculated respectively for the coded and decoded        block which is situated immediately above the current block and        for the coded and decoded block which is situated immediately to        the left of the current block, when these blocks are available.        This use of the probabilities of symbol occurrence is        represented partially in FIG. 1B, for the sake of clarity of the        latter, by the thin-line arrows.

The advantage of such an entropy coding is that it exploits theprobabilities arising from the immediate environment of the currentblock, thereby making it possible to achieve higher coding performance.Furthermore, the coding technique used makes it possible to code inparallel a predetermined number of pairwise neighboring subsets ofblocks. In the example represented in FIG. 1B, three subsets SE1, SE2and SE3 are coded in parallel, each subset consisting in this example ofa row of blocks, represented dashed. Of course, such a coding requiresthat the blocks situated respectively above and above to the right ofthe current block be available.

A drawback of this parallel coding technique is that, to allow access toa probability of symbol occurrence calculated for the block situatedimmediately above the current block, it is necessary to store a quantityof probabilities associated with a row of blocks. If the second row ofblocks SE2 is considered for example in FIG. 1B, the first block of thisrow is subjected to an entropy coding by using the probabilities ofsymbol occurrence calculated for the first block of the previous firstrow SE1. On completion of the coding of the first block of the secondrow, the state of the value V1 of probability of occurrence is stored ina buffer memory MT. The second block of the second row SE2 is thereaftersubjected to an entropy coding by using the probabilities of symboloccurrence calculated at one and the same time for the second block ofthe first row SE1 and the first block of the second row SE2. Oncompletion of the coding of the second block of the second row, thestate of the value V2 of probability of occurrence is stored in thebuffer memory MT. This procedure is undertaken until the last block ofthe second row SE2. Since the quantity of probabilities is very large(there exist as many probabilities as the combination of the number ofsyntax elements with the number of associated contexts), the storage ofthese probabilities over an entire row is expensive in terms of memoryresources.

SUBJECT AND SUMMARY OF THE INVENTION

One of the aims of the invention is to remedy drawbacks of theaforementioned prior art.

For this purpose, a subject of the present invention relates to a methodof coding at least one image comprising the steps of:

-   -   cutting of the image into a plurality of blocks,    -   grouping of the blocks into a predetermined number of subsets of        blocks,    -   coding in parallel of each of said subsets of blocks, the blocks        of a subset considered being coded according to a predetermined        sequential order of traversal, said coding step comprising, for        a current block of a subset considered, the sub-steps of:    -   predictive coding of the current block with respect to at least        one previously coded and decoded block,    -   entropy coding of the current block by learning of at least one        probability of symbol occurrence.

The method according to the invention is noteworthy in that:

-   -   in the case where the current block is the first block to be        coded of a subset considered, the probability of symbol        occurrence is that which was calculated for a coded and decoded        predetermined block of at least one other subset,    -   in the case where the current block is a block of the subset        considered, other than the first block, the probability of        symbol occurrence is that which was calculated for at least one        coded and decoded block belonging to the same subset.

Such an arrangement makes it possible to store in the buffer memory ofthe coder a much smaller quantity of probabilities of occurrence ofsymbols, since the entropy coding of a current block other than thefirst block of a subset of blocks no longer necessarily requires the useof the probabilities of symbol occurrence calculated for a previouslycoded and decoded block which is situated above a current block inanother subset.

Such an arrangement furthermore makes it possible to maintain theexisting compression performance, since the entropy coding of a currentblock uses probabilities of symbol occurrence calculated for anotherpreviously coded and decoded block of the subset to which the currentblock belongs, and that consequently a learning has already been carriedout through the updating of the probabilities so that the latter are inaccordance with the statistics of the video signal.

The main advantage of using the probabilities of symbol occurrencecalculated for the first block of said other subset during the entropycoding of the first current block of a considered subset of blocks isthat of economizing on the coders buffer memory by storing in the latterjust the update of said probabilities of occurrence of symbols, withouttaking into account the symbol occurrence probabilities learned by theother consecutive blocks of said other subset.

The main advantage of using the symbol occurrence probabilitiescalculated for a block of said other subset, other than the first block,for example the second block, during the entropy coding of the firstcurrent block of a considered subset of blocks is that of obtaining moreprecise and therefore better learning of the probabilities of occurrenceof symbols, thereby giving rise to better video compression performance.

In a particular embodiment, the coded and decoded block belonging to thesame subset as the current block to be coded other than the first blockof the subset is that which is the nearest neighbor of the current blockto be coded.

Such an arrangement thus makes it possible to store just the symboloccurrence probabilities learned during the entropy coding of a firstblock of a subset considered, since in this particular case, account istaken only of the symbol occurrence probability calculated for the blocksituated above the first current block and belonging to another subset.This results in optimization of the reduction in the size of the coder'smemory resources.

In another particular embodiment, in the case where the predictivecoding of a block of a subset considered is intended to be performedwith respect to a predetermined number of previously coded and decodedblocks of a subset other than said subset considered, the parallelcoding of the blocks of said subset considered is performed with a shiftby said predetermined number of blocks with respect to the subset ofblocks immediately preceding in the order in which the parallel codingis performed.

Such an arrangement allows the achieving, for a current subset of blocksto be coded, a synchronization of the progress of processing of theblocks of the subset of blocks preceding the current subset in the orderin which the parallel coding is performed, thereby making it possible toguarantee the availability of the block or blocks of the precedingsubset which are used for the coding of a current block. In this manner,the step of verifying the availability of this or these blocks of thepreceding subset, such as are implemented in parallel coders of theprior art, can advantageously be omitted, thereby allowing anacceleration of the processing time required to process the blocks inthe coder according to the invention.

Correlatively, the invention further relates to a device for coding atleast one image comprising:

-   -   means for cutting the image into a plurality of blocks,    -   means for grouping the blocks into a predetermined number of        subsets of blocks,    -   means for parallel coding of each of the subsets of blocks, the        blocks of a subset considered being coded according to a        predetermined sequential order of traversal, the coding means        comprising, for a current block of a subset considered:    -   sub-means of predictive coding of the current block with respect        to at least one previously coded and decoded block,    -   sub-means of entropy coding of the current block on the basis of        at least one probability of symbol occurrence.

Such a coding device is noteworthy in that:

-   -   in the case where the current block is the first block to be        coded of a subset considered, the sub-means of entropy coding        take account, for the entropy coding of the first current block,        of the probability of symbol occurrence which was calculated for        a coded and decoded predetermined block of at least one other        subset,    -   in the case where the current block is a block of the subset        considered, other than the first block of the latter, the        sub-means of entropy coding take account, for the entropy coding        of the current block, of the probability of symbol occurrence        which was calculated for at least one coded and decoded block        belonging to the same subset.

In a corresponding manner, the invention also relates to a method ofdecoding a stream representative of at least one coded image, comprisingthe steps of:

-   -   identification in the image of a predetermined number of subsets        of blocks to be decoded,    -   parallel decoding of parts of the stream that are associated        with each of the subsets of blocks, the blocks of a subset        considered being decoded according to a predetermined sequential        order of traversal, the decoding step comprising, for a current        block of a subset considered, the sub-steps of:    -   entropy decoding of the current block on the basis of at least        one probability of symbol occurrence    -   predictive decoding of the current block with respect to at        least one previously decoded block.

Such a decoding method is noteworthy in that:

-   -   in the case where the current block is the first block to be        decoded of a subset considered, the probability of symbol        occurrence is that which was calculated for a decoded        predetermined block of at least one other subset,    -   in the case where the current block is a block of the subset        considered, other than the first block of the latter, the        probability of symbol occurrence is that which was calculated        for at least one decoded block belonging to the same subset.

In a particular embodiment, the decoded block belonging to the samesubset as the current block to be decoded other than the first block ofthe subset is that which is the nearest neighbor of the current block tobe decoded.

In another particular embodiment, in the case where the predictivedecoding of a block of a subset considered is intended to be performedwith respect to a predetermined number of previously coded and decodedblocks of a subset other than the subset considered, the paralleldecoding of the blocks of the subset considered is performed with ashift by the predetermined number of blocks with respect to the subsetof blocks immediately preceding in the order in which the paralleldecoding is performed.

Correlatively, the invention further relates to a device for decoding astream representative of at least one coded image, comprising:

-   -   identification means for identifying in the image a        predetermined number of subsets of blocks to be decoded,    -   means of parallel decoding of parts of the stream that are        associated with each of the subsets of blocks, the blocks of a        subset considered being decoded according to a predetermined        sequential order of traversal, the decoding means comprising,        for a current block of a subset considered:    -   sub-means of entropy decoding of the current block on the basis        of at least one probability of symbol occurrence,    -   sub-means of predictive decoding of the current block with        respect to at least one previously decoded block.

Such a decoding device is noteworthy in that:

-   -   in the case where the current block is the first block to be        decoded of a subset considered, the sub-means of entropy        decoding take account, for the entropy decoding of the first        current block, of the probability of symbol occurrence which was        calculated for a decoded predetermined block of at least one        other subset,    -   in the case where the current block is a block of the subset        considered, other than the first block of the latter, the        sub-means of entropy decoding take account, for the entropy        decoding of the current block, of the probability of symbol        occurrence which was calculated for at least one decoded block        belonging to the same subset.

The invention is also aimed at a computer program comprisinginstructions for the execution of the steps of the coding or decodingmethod hereinabove, when the program is executed by a computer.

Such a program can use any programming language, and be in the form ofsource code, object code, or of code intermediate between source codeand object code, such as in a partially compiled form, or in any otherdesirable form.

Yet another subject of the invention is also aimed at a recording mediumreadable by a computer, and comprising computer program instructionssuch as mentioned hereinabove.

The recording medium can be any entity or device capable of storing theprogram. For example, such a medium can comprise a storage means, suchas a ROM, for example a CD ROM or a microelectronic circuit ROM, or elsea magnetic recording means, for example a diskette (floppy disk) or ahard disk.

Moreover, such a recording medium can be a transmissible medium such asan electrical or optical signal, which can be conveyed via an electricalor optical cable, by radio or by other means. The program according tothe invention can be in particular downloaded on a network of Internettype.

Alternatively, such a recording medium can be an integrated circuit intowhich the program is incorporated, the circuit being adapted forexecuting the method in question or to be used in the execution of thelatter.

The coding device, the decoding method, the decoding device and thecomputer programs aforementioned present at least the same advantages asthose conferred by the coding method according to the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

Other characteristics and advantages will become apparent on reading twopreferred embodiments described with reference to the figures in which:

FIG. 1A represents an image coding diagram of the prior art according toa first example,

FIG. 1B represents an image coding diagram of the prior art according toa second example,

FIG. 2A represents the main steps of the coding method according to theinvention,

FIG. 2B represents in detail the parallel coding implemented in thecoding method of FIG. 2A,

FIG. 3A represents an embodiment of a coding device according to theinvention,

FIG. 3B represents a coding unit for the coding device of FIG. 3A,

FIG. 4A represents an image coding/decoding diagram according to a firstpreferential embodiment,

FIG. 4B represents an image coding/decoding diagram according to asecond preferential embodiment,

FIG. 5A represents the main steps of the decoding method according tothe invention,

FIG. 5B represents in detail the parallel coding implemented in thedecoding method of FIG. 5A,

FIG. 6A represents an embodiment of a decoding device according to theinvention,

FIG. 6B represents a decoding unit for the decoding device of FIG. 6A.

DETAILED DESCRIPTION OF AN EMBODIMENT OF THE CODING PART

An embodiment of the invention will now be described, in which thecoding method according to the invention is used to code a sequence ofimages according to a binary stream close to that obtained by a codingaccording to the H.264/MPEG-4 AVC standard. In this embodiment, thecoding method according to the invention is for example implemented in asoftware or hardware manner by modifications of a coder initially inaccordance with the H.264/MPEG-4 AVC standard. The coding methodaccording to the invention is represented in the form of an algorithmcomprising steps C1 to C5, represented in FIG. 2A.

According to the embodiment of the invention, the coding methodaccording to the invention is implemented in a coding device COrepresented in FIG. 3A.

With reference to FIG. 2A, the first coding step C1 is the cutting of animage IE of a sequence of images to be coded into a plurality of blocksor macro-blocks MB, as represented in FIG. 4A or 4B. In the examplesrepresented, said blocks MB have a square shape and all have the samesize. As a function of the size of the image which is not necessarily amultiple of the size of the blocks, the last blocks on the left and thelast blocks at the bottom may not be square. In an alternativeembodiment, the blocks can be for example of rectangular size and/or notaligned with one another.

Each block or macroblock can moreover itself be divided into sub-blockswhich are themselves subdividable.

Such a cutting is performed by a partitioning module PCO represented inFIG. 3A which uses for example a partitioning algorithm well known assuch.

With reference to FIG. 2A, the second coding step C2 is the grouping ofthe aforementioned blocks into a predetermined number P of consecutivesubsets of blocks SE1, SE2, . . . , SEk, . . . , SEP intended to becoded in parallel. In the examples represented in FIGS. 4A and 4B, thepredetermined number P is equal to 4 and the four subsets SE1, SE2, SE3,SE4, represented dashed, consist respectively of the first four rows ofblocks of the image IE.

Such a grouping is performed by a calculation module GRCO represented inFIG. 3A, with the aid of an algorithm well known per se.

With reference to FIG. 2A, the third coding step C3 consists in thecoding in parallel of each of said subsets of blocks SE1, SE2, SE3 andSE4, the blocks of a subset considered being coded according to apredetermined sequential order of traversal PS. In the examplesrepresented in FIGS. 4A and 4B, the blocks of a current subset SEk(1≦k≦4) are coded one after the other, from left to right, as indicatedby the arrow PS.

Such a coding in parallel is implemented by a number R of coding unitsUCk (1≦k≦R) with R=4 as represented in FIG. 3A and allows a substantialacceleration of the coding method. In a manner known as such, the coderCO comprises a buffer memory MT which is adapted for containing thesymbol occurrence probabilities such as progressively updated in tandemwith the coding of a current block.

As represented in greater detail in FIG. 3B, each of the coding unitsUCk comprises:

-   -   a sub-unit for predictive coding of a current block with respect        to at least one previously coded and decoded block, denoted        SUCPk;    -   a sub-unit for entropy coding of said current block by using at        least one probability of symbol occurrence calculated for said        previously coded and decoded block, denoted SUCEk.

The predictive coding sub-unit SUCPk is able to perform a predictivecoding of the current block, according to the conventional predictiontechniques, such as for example in Intra and/or Inter mode.

The entropy coding sub-unit SUCEk is for its part of CABAC type, butmodified according to the present invention, as will be describedfurther on in the description.

As a variant, the entropy coding sub-unit SUCEk could be a Huffman coderknown as such.

In the examples represented in FIGS. 4A and 4B, the first unit UC1 codesthe blocks of the first row SE1, from left to right. When it reaches thelast block of the first row SE1, it passes to the first block of the(N+1)^(st) row, here the 5^(th) row, etc. The second unit UC2 codes theblocks of the second row SE2, from left to right. When it reaches thelast block of the second row SE2, it passes to the first block of the(N+2)^(nd) row, here the 6^(th) row, etc. This traversal is repeateduntil the unit UC4, which codes the blocks of the fourth row SE4, fromleft to right. When it reaches the last block of the first row, itpasses to the first block of the (N+4)^(th) row, here the 8^(th) row,and so on and so forth until the last block of the image IE is coded.

Other types of traversal than that which has just been describedhereinabove are of course possible. Thus, it is possible to cut theimage IE into several sub-images and to independently apply a cutting ofthis type to each sub-image. It is also possible for each coding unit toprocess not nested rows, as explained hereinabove, but nested columns.It is also possible to traverse the rows or columns in either direction.

With reference to FIG. 2A, the fourth coding step C4 is the productionof N sub-bitstreams Fk (1≦k≦N) representing the processed blockscompressed by each of the aforementioned coding units, as well as adecoded version of the processed blocks of each subset SEk. The decodedprocessed blocks of a subset considered, denoted SED1, SED2, . . . ,SEDk, . . . , SEDP may be reused by some of the coding units UC1, UC2, .. . , UCk, . . . , UCP represented in FIG. 3A, according to asynchronization mechanism which will be detailed further on in thedescription.

With reference to FIG. 2A, the fifth coding step C5 consists inconstructing a global stream F on the basis of the aforementionedsub-streams Fk. According to one embodiment, the sub-streams Fk aresimply juxtaposed, with an extra information item intended to indicateto the decoder the location of each sub-stream Fk in the global streamF. The latter is transmitted by a communication network (notrepresented), to a remote terminal. The latter comprises the decoder DOrepresented in FIG. 6A.

Thus, as will be described in detail further on in the description, thedecoder according to the invention is able to isolate the sub-streams Fkwithin the global stream F and to assign them to each component decodingunit of the decoder. It will be noted that such a decomposition of thesub-streams into global stream is independent of the choice of the useof several coding units operating in parallel, and that it is possiblewith this approach to have just the coder or just the decoder whichcomprises units operating in parallel.

Such a construction of the global stream F is implemented in a streamconstruction module CF, such as represented in FIG. 3A.

The various specific sub-steps of the invention, such as are implementedduring the aforementioned parallel coding step C3, in a coding unit UCk,will now be described with reference to FIG. 2B.

In the course of a step C31, the coding unit UCk selects as currentblock the first block to be coded of a current row SEk represented inFIG. 4A or 4B.

In the course of a step C32, the unit UCk tests whether the currentblock is the first block (situated at the top and on the left) of theimage IE which has been cut up into blocks in the aforementioned stepC1.

If such is the case, in the course of a step C33, the codingprobabilities are initialized to values Pinit previously defined in thecoder CO of FIG. 3A.

If such is not the case, there is undertaken, in the course of a stepC40 which will be described later in the subsequent description, thedetermination of the availability of the necessary previously coded anddecoded blocks.

In the course of a step C34, there is undertaken the coding of the firstcurrent block MB1 of the first row SE1 represented in FIG. 4A or 4B.Such a step C34 comprises a plurality of sub-steps C341 to C348 whichwill be described hereinbelow.

In the course of a first sub-step C341, there is undertaken thepredictive coding of the current block MB1 by known techniques of intraand/or inter prediction, in the course of which the block MB1 ispredicted with respect to at least one previously coded and decodedblock.

It goes without saying that other modes of intra prediction such asproposed in the H.264 standard are possible.

The current block MB1 can also be subjected to a predictive coding ininter mode, in the course of which the current block is predicted withrespect to a block arising from a previously coded and decoded image.Other types of prediction are of course conceivable. Among the possiblepredictions for a current block, the optimal prediction is chosenaccording to a rate distortion criterion well known to the personskilled in the art.

Said aforementioned predictive coding step makes it possible toconstruct a predicted block MBp₁ which is an approximation of thecurrent block MB₁. The information relating to this predictive codingwill subsequently be written into the stream F transmitted to thedecoder DO. Such information comprises especially the type of prediction(inter or intra), and if appropriate, the mode of intra prediction, thetype of partitioning of a block or macroblock if the latter has beensubdivided, the reference image index and the displacement vector usedin the inter prediction mode. This information is compressed by thecoder CO.

In the course of a following sub-step C342, there is undertaken thesubtraction of the predicted block MBp₁ from the current block MB₁ toproduce a residual block MBr₁.

In the course of a following sub-step C343, there is undertaken thetransformation of the residual block MBr₁ according to a conventionaloperation of direct transformation such as for example a discrete cosinetransformation of DCT type, to produce a transformed block MBt₁.

In the course of a following sub-step C344, there is undertaken thequantization of the transformed block MBt₁ according to a conventionalquantization operation, such as for example a scalar quantization. Ablock of quantized coefficients MBq₁ is then obtained.

In the course of a following sub-step C345, there is undertaken theentropy coding of the block of quantized coefficients MBq₁. In thepreferred embodiment, this entails a CABAC entropy coding.

In the course of a following sub-step C346, there is undertaken thedequantization of the block MBq₁ according to a conventionaldequantization operation, which is the operation inverse to thequantization performed in step C344. A block of dequantized coefficientsMBDq₁ is then obtained.

In the course of a following sub-step C347, there is undertaken theinverse transformation of the block of dequantized coefficients MBDq₁which is the operation inverse to the direct transformation performed instep C343 hereinabove. A decoded residual block MBDr₁ is then obtained.

In the course of a following sub-step C348, there is undertaken theconstruction of the decoded block MBD₁ by adding to predicted block MBp₁the decoded residual block MBDr₁. It should be noted that the latterblock is the same as the decoded block obtained on completion of themethod of decoding the image IE which will be described further on inthe description. The decoded block MBD₁ is thus rendered available to beused by the coding unit UC1 or any other coding unit forming part of thepredetermined number R of coding units.

On completion of the aforementioned coding step C34, the entropy codingsub-unit SUCEk such as represented in FIG. 3B contains all theprobabilities such as progressively updated in tandem with the coding ofthe first block. These probabilities correspond to the various possiblesyntax elements and to the various associated coding contexts.

Subsequent to the aforementioned coding step C34, a test is performed,in the course of a step C35, to determine whether the current block isthe jth block of this same row, were j is a known predetermined value ofthe coder CO which is at least equal to 1.

If such is the case, in the course of a step C36, the set ofprobabilities calculated for the jth block is stored in the buffermemory MT of the coder CO such as represented in FIG. 3A and in FIGS. 4Aand 4B, the size of said memory being suitable for storing thecalculated number of probabilities.

In the course of a step C37, the unit UCk tests whether the currentblock of the row SEk which has just been coded is the last block of theimage IE.

If such is the case, in the course of a step C38, the coding method isended.

If such is not the case, there is undertaken, in the course of step C39,the selection of the following block MB_(i) to be coded in accordancewith the order of traversal represented by the arrow PS in FIG. 4A or4B.

If in the course of step C35, the current block is not the jth block ofthe row SEk considered, then step C37 hereinabove is undertaken.

In the course of a step C40, there is undertaken the determination ofthe availability of previously coded and decoded blocks which arenecessary for coding the current block MB_(i). Having regard to the factthat this entails a parallel coding of the blocks of the image IE bydifferent coding units UCk, it may be that these blocks were not codedand decoded by the coding unit assigned to the coding of these blocksand that they are therefore not yet available. Said determining stepconsists in verifying whether a predetermined number N′ of blockssituated in the previous row SEk-1, for example the two blocks situatedrespectively above and above to the right of the current block, areavailable for the coding of the current block, that is to say if theyhave already been coded and then decoded by the coding unit UCk-1assigned to their coding. Said determining step also consists inverifying the availability of at least one block situated to the left ofthe current block to be coded MB_(i). However, having regard to theorder of traversal PS chosen in the embodiment represented in FIG. 4A or4B, the blocks are coded one after the other in a row SEk considered.Consequently, the left coded and decoded block is always available (withthe exception of the first block of a row). In the example representedin FIG. 4A or 4B, this entails the block situated immediately to theleft of the current block to be coded. For this purpose, only theavailability of the two blocks situated respectively above and above tothe right of the current block is tested.

This test step being liable to slow the coding method, in an alternativemanner in accordance with the invention, a clock CLK represented in FIG.3A is adapted for synchronizing the progress of the coding of the blocksso as to guarantee the availability of the two blocks situatedrespectively above and above to the right of the current block, withoutit being necessary to verify the availability of these two blocks. Thus,as represented in FIG. 4A or 4B, a coding unit UCk always begins to codethe first block with a shift by a predetermined number N′ (here N′=2) ofcoded and decoded blocks of the previous row SEk-1 which are used forthe coding of the current block. From a software point of view, theimplementation of such a clock makes it possible to noticeablyaccelerate the processing time required to process the blocks of theimage IE in the coder CO.

In the course of a step C41, a test is performed to determine whetherthe current block is the first block of the row SEk considered.

If such is the case, in the course of a step C42, there is undertakenthe reading in the buffer memory MT solely of the symbol occurrenceprobabilities calculated during the coding of the jth block of theprevious row SEk-1.

According to a first variant represented in FIG. 4A, the jth block isthe first block of the previous row SEk-1 (j=1). Such a reading consistsin replacing the probabilities of the CABAC coder with that present inthe buffer memory MT. Dealing as one is with the first respective blocksof the second, third and fourth rows SE2, SE3 and SE4, this reading stepis delineated in FIG. 4A by the arrows represented by thin lines.

According to a second variant of the aforementioned step C42 which isillustrated in FIG. 4B, the jth block is the second block of theprevious row SEk-1 (j=2). Such a reading consists in replacing theprobabilities of the CABAC coder with that present in the buffer memoryMT. Dealing as one is with the first respective blocks of the second,third and fourth rows SE2, SE3 and SE4, this reading step is delineatedin FIG. 4B by the arrows represented by thin dashed lines.

Subsequent to step C42, the current block is coded and then decoded byiteration of steps C34 to C38 described above.

If subsequent to the aforementioned step C41, the current block is notthe first block of the row SEk considered, there is advantageously notundertaken the reading of the probabilities arising from the previouslycoded and decoded block which is situated in the same row SEk, that isto say the coded and decoded block situated immediately to the left ofthe current block, in the example represented. Indeed, having regard tothe sequential traversal of reading PS of the blocks situated in thesame row, as represented in FIG. 4A or 4B, the symbol occurrenceprobabilities present in the CABAC coder when beginning the coding ofthe current block are exactly that which are present aftercoding/decoding of the preceding block in this same row.

Consequently, in the course of a step C43, there is undertaken thelearning of the probabilities of symbol occurrence for the entropycoding of said current block, which correspond solely to those whichwere calculated for said preceding block in the same row, as isrepresented by the double solid arrows in FIG. 4A or 4B.

Subsequent to step C43, the current block is coded and then decoded byiteration of steps C34 to C38 described above.

Detailed Description of an Embodiment of the Decoding Part

An embodiment of the decoding method according to the invention will nowbe described, in which the decoding method is implemented in a softwareor hardware manner by modifications of a decoder initially in accordancewith the H.264/MPEG-4 AVC standard.

The decoding method according to the invention is represented in theform of an algorithm comprising steps D1 to D4, represented in FIG. 5A.

According to the embodiment of the invention, the decoding methodaccording to the invention is implemented in a decoding device DOrepresented in FIG. 6A.

With reference to FIG. 5A, the first decoding step D1 is theidentification in said stream F of the N sub-streams F1, F2, . . . , Fk,. . . , FP containing respectively the N subsets SE1, SE2, . . . , SEk,. . . , SEP of previously coded blocks or macro-blocks MB, asrepresented in FIG. 4A or 4B. For this purpose, each sub-stream Fk inthe stream F is associated with an indicator intended to allow thedecoder DO to determine the location of each sub-stream Fk in the streamF. In the example represented, said blocks MB have a square shape andall have the same size. As a function of the size of the image which isnot necessarily a multiple of the size of the blocks, the last blocks onthe left and the last blocks at the bottom may not be square. In analternative embodiment, the blocks can be for example of rectangularsize and/or not aligned with one another.

Each block or macroblock can moreover itself be divided into sub-blockswhich are themselves subdividable.

Such an identification is performed by a stream extraction module EXDOsuch as represented in FIG. 6A.

In the example represented in FIG. 4A or 4B, the predetermined number isequal to 4 and the four subsets SE1, SE2, SE3, SE4 are representeddashed.

With reference to FIG. 5A, the second decoding step D2 is the decodingin parallel of each of said subsets of blocks SE1, SE2, SE3 and SE4, theblocks of a subset considered being coded according to a predeterminedsequential order of traversal PS. In the example represented in FIG. 4Aor 4B, the blocks of a current subset SEk (1≦k≦4) are decoded one afterthe other, from left to right, as indicated by the arrow PS. Oncompletion of step D2, the subsets of decoded blocks SED1, SED2, SED3, .. . , SEDk, . . . , SEDP are obtained.

Such a decoding in parallel is implemented by a number R of decodingunits UDk (1≦k≦R) with R=4 as represented in FIG. 6A and allows asubstantial acceleration of the decoding method. In a manner known assuch, the decoder DO comprises a buffer memory MT which is adapted forcontaining the probabilities of occurrence of symbols such asprogressively updated in tandem with the decoding of a current block.

As represented in greater detail in FIG. 6B, each of the decoding unitsUDk comprises:

-   -   a sub-unit for entropy decoding of said current block by        learning of at least one probability of symbol occurrence        calculated for at least one previously decoded block, denoted        SUDEk,    -   a sub-unit for predictive decoding of a current block with        respect to said previously decoded block, denoted SUDPk.

The predictive decoding sub-unit SUDPk is able to perform a predictivedecoding of the current block, according to the conventional predictiontechniques, such as for example in Intra and/or Inter mode.

The entropy decoding sub-unit SUDEk is for its part of CABAL type, butmodified according to the present invention, as will be describedfurther on in the description.

As a variant, the entropy decoding sub-unit SUDEk could be a Huffmandecoder known as such.

In the example represented in FIG. 4A or 4B, the first unit UD1 decodesthe blocks of the first row SE1, from left to right. When it reaches thelast block of the first row SE1, it passes to the first block of the(N+1)^(st) row, here the 5^(th) row, etc. The second unit UC2 decodesthe blocks of the second row SE2, from left to right. When it reachesthe last block of the second row SE2, it passes to the first block ofthe (N+2)^(nd) row, here the 6^(th) row, etc. This traversal is repeateduntil the unit UD4, which decodes the blocks of the fourth row SE4, fromleft to right. When it reaches the last block of the first row, itpasses to the first block of the (N+4)^(th) row, here the 8^(th) row,and so on and so forth until the last block of the last identifiedsub-stream is decoded.

Other types of traversal than that which has just been describedhereinabove are of course possible. For example, each decoding unitcould process not nested rows, as explained hereinabove, but nestedcolumns. It is also possible to traverse the rows or columns in eitherdirection.

With reference to FIG. 5A, the third decoding step D3 is thereconstruction of an image decoded on the basis of each decoded subsetSED1, SED2, . . . , SEDk, . . . , SEDP obtained in the decoding step D2.More precisely, the decoded blocks of each decoded subset SED1, SED2, .. . , SEDk, . . . , SEDP are transmitted to an image reconstruction unitURI such as represented in FIG. 6A. In the course of this step D3, theunit URI writes the decoded blocks in a decoded image as and when theseblocks become available.

In the course of a fourth decoding step D4 represented in FIG. 5A, afully decoded image ID is delivered by the unit URI represented in FIG.6A.

The various specific sub-steps of the invention, such as are implementedduring the aforementioned parallel decoding step D2, in a decoding unitUDk, will now be described with reference to FIG. 5B.

In the course of a step D21, the decoding unit UDk selects as currentblock the first block to be decoded of the current row SEk representedin FIG. 4A or 4B.

In the course of a step D22, the unit UDk tests whether the currentblock is the first block of the decoded image, in this instance thefirst block of the sub-stream F1.

If such is the case, in the course of a step D23, the decodingprobabilities are initialized to values Pinit previously defined in thedecoder DO of FIG. 6A.

If such is not the case, there is undertaken, in the course of a stepD30 which will be described later in the subsequent description, thedetermination of the availability of the necessary previously decodedblocks.

In the course of a step D24, there is undertaken the decoding of thefirst current block MB1 of the first row SE1 represented in FIG. 4A or4B. Such a step D24 comprises a plurality of sub-steps D241 to D246which will be described hereinbelow.

In the course of a first sub-step D241, there is undertaken the entropydecoding of the syntax elements related to the current block. Moreprecisely, the syntax elements related to the current block are decodedby the CABAC entropy decoding sub-unit SUDE1 such as represented in FIG.6B. The latter decodes the sub-bitstream F1 of the compressed file toproduce the syntax elements, and, at the same time, updates itsprobabilities in such a way that, at the moment at which this sub-unitdecodes a symbol, the probabilities of occurrence of this symbol areidentical to those obtained during the coding of this same symbol duringthe aforementioned entropy coding step C345.

In the course of a following sub-step D242, there is undertaken thepredictive decoding of the current block MB1 by known techniques ofintra and/or inter prediction, in the course of which the block MB1 ispredicted with respect to at least one previously decoded block.

It goes without saying that other modes of intra prediction such asproposed in the H.264 standard are possible.

In the course of this step, the predictive decoding is performed withthe aid of the syntax elements decoded in the previous step andcomprising especially the type of prediction (inter or intra), and ifappropriate, the mode of intra prediction, the type of partitioning of ablock or macroblock if the latter has been subdivided, the referenceimage index and the displacement vector used in the inter predictionmode.

Said aforementioned predictive decoding step makes it possible toconstruct a predicted block MBp₁.

In the course of a following sub-step D243, there is undertaken theconstruction of a quantized residual block MBq₁ with the aid of thepreviously decoded syntax elements.

In the course of a following sub-step D244, there is undertaken thedequantization of the quantized residual block MBq₁ according to aconventional dequantization operation which is the operation inverse tothe quantization performed in the aforementioned step C344, to produce adecoded dequantized block MBDt₁.

In the course of a following sub-step D245, there is undertaken theinverse transformation of the dequantized block MBDt₁ which is theoperation inverse to the direct transformation performed in step C343hereinabove. A decoded residual block MBDr₁ is then obtained.

In the course of a following sub-step D246, there is undertaken theconstruction of the decoded block MBD₁ by adding to predicted block MBp₁the decoded residual block MBDr₁. The decoded block MBD₁ is thusrendered available to be used by the decoding unit UD1 or any otherdecoding unit forming part of the predetermined number N of decodingunits.

On completion of the aforementioned decoding step D246, the entropydecoding sub-unit SUDE1 such as represented in FIG. 6B contains all theprobabilities such as progressively updated in tandem with the decodingof the first block. These probabilities correspond to the variouspossible syntax elements and to the various associated decodingcontexts.

Subsequent to the aforementioned decoding step D24, a test is performed,in the course of a step D25, to determine whether the current block isthe jth block of this same row, where j is a known predetermined valueof the decoder DO which is at least equal to 1.

If such is the case, in the course of a step D26, the set ofprobabilities calculated for the jth block is stored in the buffermemory MT of the decoder DO such as represented in FIG. 6A and in FIG.4A or 4B, the size of said memory being suitable for storing thecalculated number of probabilities.

In the course of a step D27, the unit UDk tests whether the currentblock which has just been decoded is the last block of the lastsub-stream.

If such is the case, in the course of a step D28, the decoding method isended.

If such is not the case, there is undertaken, in the course of step D29,the selection of the following block MB_(i) to be decoded in accordancewith the order of traversal represented by the arrow PS in FIG. 4A or4B.

If in the course of the aforementioned step D25, the current block isnot the jth block of the row SEDk considered, step D27 hereinabove isundertaken.

In the course of a step D30 which follows the aforementioned step D29,there is undertaken the determination of the availability of previouslydecoded blocks which are necessary for decoding the current blockMB_(i). Having regard to the fact that this entails a parallel decodingof the blocks by different decoding units UDk, it may be that theseblocks were not decoded by the decoding unit assigned to the decoding ofthese blocks and that they are therefore not yet available. Saiddetermining step consists in verifying whether a predetermined number N′of blocks situated in the previous row SEk-1, for example the two blockssituated respectively above and above to the right of the current block,are available for the decoding of the current block, that is to say ifthey have already been decoded by the decoding unit UDk-1 assigned totheir decoding. Said determining step also consists in verifying theavailability of at least one block situated to the left of the currentblock to be decoded MB_(i). However, having regard to the order oftraversal PS chosen in the embodiment represented in FIG. 4A or 4B, theblocks are decoded one after the other in a row SEk considered.Consequently, the left decoded block is always available (with theexception of the first block of a row). In the example represented inFIG. 4A or 4B, this entails the block situated immediately to the leftof the current block to be decoded. For this purpose, only theavailability of the two blocks situated respectively above and above tothe right of the current block is tested.

This test step being liable to slow the decoding method, in analternative manner in accordance with the invention, a clock CLKrepresented in FIG. 6A is adapted for synchronizing the progress of thedecoding of the blocks so as to guarantee the availability of the twoblocks situated respectively above and above to the right of the currentblock, without it being necessary to verify the availability of thesetwo blocks. Thus, as represented in FIG. 4A or 4B, a decoding unit UDkalways begins to decode the first block with a shift by a predeterminednumber N′ (here N′=2) of decoded blocks of the previous row SEk-1 whichare used for the decoding of the current block. From a software point ofview, the implementation of such a clock makes it possible to noticeablyaccelerate the processing time required to process the blocks of eachsubset SEk in the decoder DO.

In the course of a step D31, a test is performed to determine whetherthe current block is the first block of the row SEk considered.

If such is the case, in the course of a step D32, there is undertakenthe reading in the buffer memory MT solely of the symbol occurrenceprobabilities calculated during the decoding of the jth block of theprevious row SEk-1.

According to a first variant represented in FIG. 4A, the jth block isthe first block of the previous row SEk-1 (j=1). Such a reading consistsin replacing the probabilities of the CABAC decoder with that present inthe buffer memory MT. Dealing as one is with the first respective blocksof the second, third and fourth rows SE2, SE3 and SE4, this reading stepis delineated in FIG. 4A by the arrows represented by thin lines.

According to a second variant of the aforementioned step D32 which isillustrated in FIG. 4B, the jth block is the second block of theprevious row SEk-1 (j=2). Such a reading consists in replacing theprobabilities of the CABAC decoder with that present in the buffermemory MT. Dealing as one is with the first respective blocks of thesecond, third and fourth rows SE2, SE3 and SE4, this reading step isdelineated in FIG. 4B by the arrows represented by thin dashed lines.

Subsequent to step D32, the current block is decoded by iteration ofsteps D24 to D28 described above.

If subsequent to the aforementioned step D31, the current block is notthe first block of the row SEk considered, there is advantageously notundertaken the reading of the probabilities arising from the previouslydecoded block which is situated in the same row SEk, that is to say thedecoded block situated immediately to the left of the current block, inthe example represented. Indeed, having regard to the sequentialtraversal of reading PS of the blocks situated in the same row, asrepresented in FIG. 4A or 4B, the symbol occurrence probabilitiespresent in the CABAC decoder when beginning the decoding of the currentblock are exactly that which are present after decoding of the precedingblock in this same row.

Consequently, in the course of a step D33, there is undertaken thelearning of the probabilities of symbol occurrence for the entropydecoding of said current block, which probabilities correspond solely tothose which were calculated for said preceding block in the same row, asrepresented by the double solid arrows in FIG. 4A or 4B.

Subsequent to step D33, the current block is decoded by iteration ofsteps D24 to D28 described above.

The invention claimed is:
 1. A computer-implemented method comprising:receiving a stream representative of at least one coded image;identifying, from the stream, a predetermined plurality of groups ofblocks; providing each group of blocks to a first decoding unit; andprocessing, by the first decoding unit, a first block in a given groupof blocks, wherein the processing of the first block comprises:determining that the first block is first in an order of blocks in thegiven group of blocks; in response to determining that the first blockis first in the order of blocks in the given group of blocks, retrievinga first set of probability data from a buffer, wherein the first set ofprobability data comprises a first set of probabilities of occurrence ofsymbols associated with a block that is situated immediately adjacent tothe first block and that belongs to another group of blocks that isdifferent from the given group of blocks in the predetermined pluralityof groups of blocks; entropy decoding the first block based on the firstset of probability data; and processing, by the first decoding unit, asecond block in the given group of blocks, wherein the processing of thesecond block comprises: determining that the second block is not firstin the order of blocks in the given group of blocks; in response todetermining that the second block is not first in the order of blocks inthe given group of blocks, retrieving a second set of probability datafrom a memory unit, wherein the second set of probability data comprisesa second set of probabilities of occurrence of symbols associated withat least one other already decoded block belonging to the given group ofblocks in the predetermined plurality of groups of blocks, wherein thesecond set of probabilities of occurrence of symbols are not associatedwith blocks that do not belong to the given subset of blocks; andentropy decoding the second block based on the second set of probabilitydata.
 2. The computer-implemented method of claim 1 comprising:generating a third set of probability data based on the second set ofprobability data and data about the second block; and replacing thesecond set of probability data in the memory unit with the third set ofprobability data.
 3. The computer-implemented method of claim 1 wherein:entropy decoding the first block based on the first set of probabilitydata comprises entropy decoding the first block based on the first setof probability data using a context-adaptive binary arithmetic coding(CABAC) algorithm; and entropy decoding the second block based on thesecond set of probability data comprises entropy decoding the secondblock based on the second set of probability data using the CABACalgorithm.
 4. The computer-implemented method of claim 1 comprising:generating a third set of probability data based on the first set ofprobability data and data about the first block; storing the third setof probability data to the memory unit and using at least the third setof probability data to generate the second set of probability data. 5.The computer-implemented method of claim 1 comprising: predictivedecoding of each of the plurality of blocks with respect to at least onepreviously decoded block.
 6. The computer-implemented method of claim 1comprising: processing, by the first decoding unit, a third block in thegiven group of blocks, wherein the processing of the third blockcomprises: retrieving a third set of probability data from the memoryunit, wherein the third set of probability data comprises a third set ofprobabilities of occurrence of symbols associated with blocks in thepredetermined plurality of groups of blocks, and wherein the third setof probability data is determined based at least on the second set ofprobability data; and entropy decoding the third block based on thethird set of probability data.
 7. The method of claim 1, wherein theprocessing of the second block comprises: after entropy decoding thesecond block: determining a third set of probability data; determiningwhether the second block is ordered as a particular number in the orderof blocks in the given group of blocks; in response to determining thatthe second block is ordered as the particular number in the order ofblocks in the given group of blocks, storing the third set ofprobability data in the buffer, the stored third set of probability datafor entropy decoding another block that is first in an order of blocksin another group of blocks; and in response to determining that thesecond block is not ordered as the particular number in the order ofblocks in the given group of blocks, storing the third set ofprobability data in the memory unit the stored third set of probabilitydata for entropy decoding, by the first decoding unit, another blockthat is next to the particular number in the order of blocks in thegiven group of blocks.
 8. The method of claim 7, wherein the particularnumber is first in the order of blocks in the given group of blocks. 9.The method of claim 7, wherein the particular number is second in theorder of blocks in the given group of blocks.
 10. A system comprising:one or more computers and one or more storage devices storinginstructions that are operable, when executed by the one or morecomputers, to cause the one or more computers to perform operationscomprising: receiving a stream representative of at least one codedimage; identifying, from the stream, a predetermined plurality of groupsof blocks; providing each group of blocks to a first decoding unit; andprocessing, by the first decoding unit, a first block in a given groupof blocks, wherein the processing of the first block comprises:determining that the first block is first in an order of blocks in thegiven group of blocks; in response to determining that the first blockis first in the order of blocks in the given group of blocks, retrievinga first set of probability data from a buffer, wherein the first set ofprobability data comprises a first set of probabilities of occurrence ofsymbols associated with a block that is situated immediately adjacent tothe first block and that belongs to another group of blocks that isdifferent from the given group of blocks in the predetermined pluralityof groups of blocks; entropy decoding the first block based on the firstset of probability data; and processing, by the first decoding unit, asecond block in the given group of blocks, wherein the processing of thesecond block comprises: determining that the second block is not firstin the order of blocks in the given group of blocks; in response todetermining that the second block is not first in the order of blocks inthe given group of blocks, retrieving a second set of probability datafrom a memory unit, wherein the second set of probability data comprisesa second set of probabilities of occurrence of symbols associated withat least one other already decoded block belonging to the given group ofblocks in the predetermined plurality of groups of blocks, wherein thesecond set of probabilities of occurrence of symbols are not associatedwith blocks that do not belong to the given subset of blocks; andentropy decoding the second block based on the second set of probabilitydata.
 11. The system of claim 10, wherein the operations furthercomprise: generating a third set of probability data based on the secondset of probability data and data about the second block; and replacingthe second set of probability data in the memory unit with the third setof probability data.
 12. The system of claim 10, wherein: entropydecoding the first block based on the first set of probability datacomprises entropy decoding the first block based on the first set ofprobability data using a context-adaptive binary arithmetic coding(CABAC) algorithm; and entropy decoding the second block based on thesecond set of probability data comprises entropy decoding the secondblock based on the second set of probability data using the CABACalgorithm.
 13. The system of claim 10, wherein the operations furthercomprise: generating a third set of probability data based on the firstset of probability data and data about the first block; storing thethird set of probability data to the memory unit and using at least thethird set of probability data to generate the second set of probabilitydata.
 14. The system of claim 10, wherein the operations furthercomprise: predictive decoding of each of the plurality of blocks withrespect to at least one previously decoded block.
 15. The system ofclaim 10, wherein the operations further comprise: processing, by thefirst decoding unit, a third block in the given group of blocks, whereinthe processing of the third block comprises: retrieving a third set ofprobability data from the memory unit wherein the third set ofprobability data comprises a third set of probabilities of occurrence ofsymbols associated with blocks in the predetermined plurality of groupsof blocks, and wherein the third set of probability data is determinedbased at least on the second set of probability data; and entropydecoding the third block based on the third set of probability data. 16.A non-transitory computer-readable medium storing software comprisinginstructions executable by one or more computers which, upon suchexecution, cause the one or more computers to perform operationscomprising: receiving a stream representative of at least one codedimage; identifying, from the stream, a predetermined plurality of groupsof blocks; providing each group of blocks to a first decoding unit; andprocessing, by the first decoding unit, a first block in a given groupof blocks, wherein the processing of the first block comprises:determining that the first block is first in an order of blocks in thegiven group of blocks; in response to determining that the first blockis first in the order of blocks in the given group of blocks, retrievinga first set of probability data from a buffer, wherein the first set ofprobability data comprises a first set of probabilities of occurrence ofsymbols associated with a block that is situated immediately adjacent tothe first block and that belongs to another group of blocks that isdifferent from the given group of blocks in the predetermined pluralityof groups of blocks; entropy decoding the first block based on the firstset of probability data; and processing, by the first decoding unit, asecond block in the given group of blocks, wherein the processing of thesecond block comprises: determining that the second block is not firstin the order of blocks in the given group of blocks; in response todetermining that the second block is not first in the order of blocks inthe given group of blocks, retrieving a second set of probability datafrom a memory unit, wherein the second set of probability data comprisesa second set of probabilities of occurrence of symbols associated withat least one other already decoded block belonging to the given group ofblocks in the predetermined plurality of groups of blocks, wherein thesecond set of probabilities of occurrence of symbols are not associatedwith blocks that do not belong to the given subset of blocks; andentropy decoding the second block based on the second set of probabilitydata.
 17. The non-transitory computer-readable medium of claim 16,wherein the operations further comprise: generating a third set ofprobability data based on the second set of probability data and dataabout the second block; and replacing the second set of probability datain the memory unit with the third set of probability data.
 18. Thenon-transitory computer-readable medium of claim 16, wherein theoperations further comprise: generating a third set of probability databased on the first set of probability data and data about the firstblock; and replacing the first set of probability data in the bufferwith the third set of probability data.
 19. The non-transitorycomputer-readable medium of claim 16, wherein: entropy decoding thefirst block based on the first set of probability data comprises entropydecoding the first block based on the first set of probability datausing a context-adaptive binary arithmetic coding (CABAC) algorithm; andentropy decoding the second block based on the second set of probabilitydata comprises entropy decoding the second block based on the second setof probability data using the CABAC algorithm.
 20. The non-transitorycomputer-readable medium of claim 16, wherein the operations furthercomprise: processing, by the first decoding unit, a third block in thegiven group of blocks, wherein the processing of the third blockcomprises: retrieving a third set of probability data from the memoryunit, wherein the third set of probability data comprises a third set ofprobabilities of occurrence of symbols associated with blocks in thepredetermined plurality of groups of blocks, and wherein the third setof probability data is determined based at least on the second set ofprobability data; and entropy decoding the third block based on thethird set of probability data.